<!DOCTYPE html>
<html>
<head>
<title>接口定义文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */
/* Author: Nicolas Hery - http://nicolashery.com */
/* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */
/* Source: https://github.com/nicolahery/markdownpad-github */

/* RESET
=============================================================================*/

html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
}

/* BODY
=============================================================================*/

body {
  font-family: Helvetica, arial, freesans, clean, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  color: #333;
  background-color: #fff;
  padding: 20px;
  max-width: 960px;
  margin: 0 auto;
}

body>*:first-child {
  margin-top: 0 !important;
}

body>*:last-child {
  margin-bottom: 0 !important;
}

/* BLOCKS
=============================================================================*/

p, blockquote, ul, ol, dl, table, pre {
  margin: 15px 0;
}

/* HEADERS
=============================================================================*/

h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
}

h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
  font-size: inherit;
}

h1 {
  font-size: 28px;
  color: #000;
}

h2 {
  font-size: 24px;
  border-bottom: 1px solid #ccc;
  color: #000;
}

h3 {
  font-size: 18px;
}

h4 {
  font-size: 16px;
}

h5 {
  font-size: 14px;
}

h6 {
  color: #777;
  font-size: 14px;
}

body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
  margin-top: 0;
  padding-top: 0;
}

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0;
}

h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
  margin-top: 10px;
}

/* LINKS
=============================================================================*/

a {
  color: #4183C4;
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

/* LISTS
=============================================================================*/

ul, ol {
  padding-left: 30px;
}

ul li > :first-child, 
ol li > :first-child, 
ul li ul:first-of-type, 
ol li ol:first-of-type, 
ul li ol:first-of-type, 
ol li ul:first-of-type {
  margin-top: 0px;
}

ul ul, ul ol, ol ol, ol ul {
  margin-bottom: 0;
}

dl {
  padding: 0;
}

dl dt {
  font-size: 14px;
  font-weight: bold;
  font-style: italic;
  padding: 0;
  margin: 15px 0 5px;
}

dl dt:first-child {
  padding: 0;
}

dl dt>:first-child {
  margin-top: 0px;
}

dl dt>:last-child {
  margin-bottom: 0px;
}

dl dd {
  margin: 0 0 15px;
  padding: 0 15px;
}

dl dd>:first-child {
  margin-top: 0px;
}

dl dd>:last-child {
  margin-bottom: 0px;
}

/* CODE
=============================================================================*/

pre, code, tt {
  font-size: 12px;
  font-family: Consolas, "Liberation Mono", Courier, monospace;
}

code, tt {
  margin: 0 0px;
  padding: 0px 0px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px;
}

pre>code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent;
}

pre {
  background-color: #f8f8f8;
  border: 1px solid #ccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px;
}

pre code, pre tt {
  background-color: transparent;
  border: none;
}

kbd {
    -moz-border-bottom-colors: none;
    -moz-border-left-colors: none;
    -moz-border-right-colors: none;
    -moz-border-top-colors: none;
    background-color: #DDDDDD;
    background-image: linear-gradient(#F1F1F1, #DDDDDD);
    background-repeat: repeat-x;
    border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
    border-image: none;
    border-radius: 2px 2px 2px 2px;
    border-style: solid;
    border-width: 1px;
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    line-height: 10px;
    padding: 1px 4px;
}

/* QUOTES
=============================================================================*/

blockquote {
  border-left: 4px solid #DDD;
  padding: 0 15px;
  color: #777;
}

blockquote>:first-child {
  margin-top: 0px;
}

blockquote>:last-child {
  margin-bottom: 0px;
}

/* HORIZONTAL RULES
=============================================================================*/

hr {
  clear: both;
  margin: 15px 0;
  height: 0px;
  overflow: hidden;
  border: none;
  background: transparent;
  border-bottom: 4px solid #ddd;
  padding: 0;
}

/* TABLES
=============================================================================*/

table th {
  font-weight: bold;
}

table th, table td {
  border: 1px solid #ccc;
  padding: 6px 13px;
}

table tr {
  border-top: 1px solid #ccc;
  background-color: #fff;
}

table tr:nth-child(2n) {
  background-color: #f8f8f8;
}

/* IMAGES
=============================================================================*/

img {
  max-width: 100%
}
</style>
</head>
<body>
<h1>接口定义文档</h1>
<h1>1.验证UID</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/user.php
外网：http://121.40.238.31/user.php
</code></pre>

<p>功能：客户端打开后验证uid是否正确以及绑定状态</p>
<p>POST参数：</p>
<pre><code>{
    type ： 1    //类型详见用户类型枚举
    uid：xxxxxxxxxxxx，//用户唯一ID 无则放空
    phone：12345678912，//注册用户手机号 无则放空
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0,//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID 必须有值
    phone：12345678912，//注册用户手机号 无则放空
    msg : Request successfully! //状态信息
}
</code></pre>

<p>PS:当type=3时候，如果uid为空，则返回新的uid作为重新注册的UID,当phone为空，则返回信息要求重新绑定，此时result均为2;</p>
<p>错误标识：</p>
<pre><code>0：正确
1：uid错误 将返回uid替换为客户端uid
2：注册信息有误，要求重新注册
3：uid获取失败
4：参数type必须指定为枚举：1/2/3
5：请求类型对应UID必须传值
</code></pre>

<p>用户类型枚举：</p>
<pre><code>1：没有UID，服务端返回UID作为该用户的UID
2：已经有UID，有UID但未注册
3：已经有UID且注册绑定了手机，验证手机跟UID
</code></pre>

<h1>2.请求新闻信息</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/index.php?request=news
外网：http://121.40.238.31/index.php?request=news
</code></pre>

<p>功能：请求获得首页新闻内容</p>
<p>POST参数：</p>
<pre><code>{
    uid:xxxxxxxxxxxx，//用户唯一ID
    page:1 //请求的新闻的页码
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID
    news：   [//新闻数据
                {
                    title:标题,
                    subtitle：副标题,
                    imgurl：图片地址,
                    time_stamp:时间,
                    tag：['新闻','娱乐'],    //标签JSON
                    mediaName:来源,
                    url:地址,
                    type:类型1，上方2下方
                },  
                ...
            ],
    maxPage:12， //最大有多少页新闻
    msg:&quot;Request successfully!&quot;
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid错误
2:新闻翻页超过最大页码
</code></pre>

<h1>3.请求功能按钮(预留接口)</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/index.php?request=btns
外网：http://121.40.238.31/index.php?request=btns
</code></pre>

<p>功能：给出首页配置的功能按钮样式</p>
<p>POST参数：无</p>
<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    buttonList： [//按钮列表
                    {
                        id:id
                        title:标题
                        type:类型1Native,2表示web地址
                        url:type为web类型的url地址
                        limits:0    //针对type为web，当值为1时表示必须登录，0不限制
                        icon:图标地址
                        viewname:native类型的界面名称
                    },
                    ...
                ],
    msg:&quot;Request successfully!&quot;
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
</code></pre>

<h1>4.请求状态通知栏信息</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/index.php?request=toolbar
外网：http://121.40.238.31/index.php?request=toolbar
</code></pre>

<p>功能：获得通知状态</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    location:{
                lat：纬度值
                lng：经度值
             }，
    needReturn:1//是否需要返回 非导航状态 仅仅收集坐标信息的时候 这里填1或0，1返回，0不返回，
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    status：1，//用户状态
    tripIndex：1,//行程ID 导航的时候 行程ID为-1
    routeIndex：1，//第几步了
    nextTripTime：下次行程开始时间
    stationid:xxxx //附近站台ID
    msg : &quot;Request successfully!&quot;
}      
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：UID错误
2：定位消息参数丢失
3：地图接口返回错误
</code></pre>

<p>状态枚举：</p>
<pre><code>0：常态---提示最近公交站/开启定位
1：前往公交站---步行xx分钟后到达xxx站，xx分钟后xxx公交到达xxx站
2：等车---xx分钟后xxx公交到达xxx站
3：坐车---前往xxx站，将于xx分钟后到达xxx站
4：前往目的地---步行xx分钟后到达目的地
</code></pre>

<h1>5.请求天气</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/weather.php
外网：http://121.40.238.31/weather.php
</code></pre>

<p>功能：获取天气接口</p>
<p>POST参数：无</p>
<p>返回数据(JSON):</p>
<pre><code>{
    result:0,
    msg:Request successfully!
    weather:{
        time:预报的时间点，
        type:天气类型，
        typedec:类型描述,
        temperature:温度
        aqi:aqi值，
        aqicolor:#ff6600,aqi颜色
        aqidec:aqi描述
    }
}
</code></pre>

<h1>6.通知用户定位状态</h1>
<p>服务地址 </p>
<pre><code>内网：http://192.168.1.127/localstate.php
外网：http://121.40.238.31/localstate.php
</code></pre>

<p>功能：记录客户端定位是否开启功能</p>
<p>POST参数：</p>
<pre><code>{
    uid:AD8FEABCC6656487AD,//用户UID
    localstate:定位状态， //1开启0关闭
}
</code></pre>

<p>返回数据(JSON):</p>
<pre><code>{
    result:0,
    msg:Request successfully!
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：UID不合法
2：请求失败
</code></pre>

<h1>7.获取验证码</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/verify.php
外网：http://121.40.238.31/verify.php
</code></pre>

<p>功能：请求服务端向对应手机发送验证码</p>
<p>POST参数：</p>
<pre><code>{
    phone：12345678912，//手机号码
}
</code></pre>

<p>返回数据(JSON)：</p>
<pre><code>{
    result：0，//请求结果标识
    msg:Request successfully //请求成功msg信息
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：手机号错误
2：短信发送时间频繁，还需N秒
3：短信接口返回错误（含接口错误码）
</code></pre>

<h1>8.绑定手机</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/phone.php
外网：http://121.40.238.31/phone.php
</code></pre>

<p>功能：注册并登录 获取用户手机号</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    phone：12345678912，//注册用户手机号
    verification:3264,//验证码
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID 以该UID替换当前UID 作为用户UID
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid不得为空
2：手机号错误
3：验证码错误
4：绑定失败
</code></pre>

<h1>9.修改手机号码</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/phone.php?request=modify
外网：http://121.40.238.31/phone.php?request=modify
</code></pre>

<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    phone：12345678912，//注新的手机号
    verification:6542,//验证码
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    msg：request successfully!
    uid：xxxxxxxxxxxx，//用户唯一ID
    phone:13800138000, //新绑定的手机号
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid错误
2：手机号错误
3：手机号码已经被使用
4：操作失败
</code></pre>

<h1>10.设置修改个人资料</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/userinfo.php?request=modify
外网：http://121.40.238.31/userinfo.php?request=modify
</code></pre>

<p>功能：设置修改用户信息</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    nickname：昵称，
    face：头像（可能是图片的二进制数据 也可能是文件上传 之后确认），
}
</code></pre>

<p>返回数据（json）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：&quot;xxxxxxxxxxxx&quot;，//用户唯一ID
    nickname：&quot;昵称&quot;，
    face：&quot;头像，类型为文件上传，详见上传头像接口&quot;，
    msg :&quot;Request successfully!&quot;
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：错误的uid
2：没有数据被修改
3：更新失败
</code></pre>

<h1>11.上传头像</h1>
<p>服务地址（POST）
	内网：http://192.168.1.127/avatar.php
	外网：http://121.40.238.31/avatar.php</p>
<p>功能：上传用户头像</p>
<p>POST参数：</p>
<pre><code>uid:xxxxxxxxxxx
ios: [formData appendPartWithFileData:dd name:@&quot;avatar&quot; fileName:USER_AVATAR_IMAGE mimeType:@&quot;image/png&quot;];  //IOS
android:........（再议）
</code></pre>

<p>返回数据（json）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    avatar:http://imgxxx.com/asda.png
}
</code></pre>

<p>错误标志：</p>
<pre><code>{
    0：正确,
    1：uid错误，
    2：空的上传内容
    3：上传错误
}
</code></pre>

<p>PS:头像上传大小限制:500Kb,大小:210*210px</p>
<h1>12.请求个人资料</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/userinfo.php?request=index
外网：http://121.40.238.31/userinfo.php?request=index
</code></pre>

<p>功能：获得用户信息,参数request=index可省略，默认request=index</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：&quot;xxxxxxxxxxxx&quot;，//用户唯一ID
    nickname：&quot;昵称&quot;，
    face：&quot;头像（可能是图片的二进制数据 也可能是文件上传 之后确认）&quot;，
    phone：&quot;电话&quot;,
    msg：&quot;Request successfully!&quot;
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：错误的UID
</code></pre>

<h1>13.添加/修改/删除常用地址</h1>
<p>服务地址(POST请求)：
	内网地址：
	添加：http://192.168.1.127/address.php?request=create
	修改：http://192.168.1.127/address.php?request=update
	删除：http://192.168.1.127/address.php?request=delete</p>
<pre><code>外网地址如下：
添加：http://121.40.238.31/address.php?request=create
修改：http://121.40.238.31/address.php?request=update
删除：http://121.40.238.31/address.php?request=delete
</code></pre>

<p>功能：获得用户地址</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    index_id：地址索引ID，//修改/删除时使用
    location：
    {
        lat://纬度
        lng://经度
    }，
    type:1家，2公司，0其他， 1，2不能删 
    description：描述，
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID
    index_id：地址索引ID，
    location：
    {
        lat://纬度
        lng://经度
    }，
    type:1家，2公司，0其他， 1，2不能删
    description：描述，
    msg:Request successfully!
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：错误的uid
2：地址索引ID错误
3：不合法的地址类型
4：坐标参数必填
5：操作失败（create/update/delete返回的msg不同）
6：坐标位置不得为空
7：系统默认选项不得删除
8：地址坐标重复
</code></pre>

<h1>14.请求常用地址数据</h1>
<p>服务地址(POST请求)：</p>
<pre><code>内网：http://192.168.1.127/address.php?request=index
外网：http://121.40.238.31/address.php?request=index
</code></pre>

<p>功能：获得用户信息,参数request=index可省略，默认index</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID
    addrList：[
                {
                    index_id：地址索引ID，
                    type：地址类型1家2公司0其他，
                    description：描述，
                    uid:用户UID
                    location:
                    {
                        lat://纬度
                        lng://经度
                    }
                },
                ...
              ]
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid错误
</code></pre>

<h1>15.收藏</h1>
<p>服务地址（POST请求）</p>
<pre><code>添加：http://192.168.1.127/collect.php?request=create&amp;type=1   //1站点2线路
删除：http://121.40.238.31/collect.php?request=delete&amp;type=1
</code></pre>

<p>功能：获得收藏数据</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    index_id：收藏索引ID，//删除时使用
    lineid：线路ID //收藏线路时候传
    stopid：站点ID //收藏站点时候传
    type：收藏类型 1：站点 2：线路
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID
    index_id：收藏索引ID，//删除时使用
    lineid：线路ID //收藏线路时候传
    stopid：站点ID //收藏站点时候传
    type：收藏类型 1：站点 2：线路，
    msg：Request successfully
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid错误
2：已经收藏过了的数据
3：收藏的索引ID错误
4：未知操作类型
5：请求失败
6：stopid或lineid参数丢失
</code></pre>

<h1>16.请求收藏数据</h1>
<p>服务地址(POST请求)：
	内网：http://192.168.1.127/collect.php?request=index
	外网：http://121.40.238.31/collect.php?request=index</p>
<p>功能：获得用户收藏信息</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
}
</code></pre>

<p>返回数据（json）：</p>
<pre><code>{
    result：0，//请求结果标识
    uid：xxxxxxxxxxxx，//用户唯一ID
    collectionList：[
                {
                    index_id：收藏索引ID，
                    stopid：收藏信息ID，
                    lineid:收藏信息ID
                    type：收藏类型 1：站点 2：线路，
                },
                {
                    index_id:收藏索引ID，
                    lineid:收藏信息ID
                    stopid：收藏信息ID，
                    type：收藏类型1：站点2线路，
                }
                ...
              ]
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid错误
</code></pre>

<h1>17.意见反馈</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/feedbook.php
外网：http://121.40.238.31/feedbook.php
</code></pre>

<p>功能：手机用户反馈信息</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    reason：原因
    mark：描述
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    msg:Request Successfully!
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：uid错误
2：原因重复
3：请求失败
</code></pre>

<h1>18.喜好设置</h1>
<p>服务地址（POST请求）</p>
<pre><code>设置喜好：
    内网：http://192.168.1.127/hobbit.php?request=setting
    外网：http://121.40.238.31/hobbit.php?request=setting

请求喜好设置数据：
    内网：http://192.168.1.127/hobbit.php?request=index
    外网：http://121.40.238.31/hobbit.php?request=index
</code></pre>

<p>功能：用户喜好 用于推送</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result：0，//请求结果标识
    msg：&quot;Request successfully!&quot;
    uid：xxxxxxxxxxxx，   //用户唯一ID
    likeList：{          //设置时候传参数，传需要设置的选项
                today_topic:bool     //1开启 0关闭 否今日看点
                topic_chanel:bool    //1开启 0关闭 专题频道
                top_hot:bool         //1开启 0关闭 头条热点
                country_news:bool    //国内新闻
                imgs:bool            //图片精选
            }
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：UID错误
2：参数类型错误
3：操作失败
</code></pre>

<h1>19.通知设置</h1>
<p>服务地址（POST请求）</p>
<pre><code>设置通知：
    内网：http://192.168.1.127/push.php?request=setting
    外网：http://121.40.238.31/push.php?request=setting

请求通知设置数据
    内网：http://192.168.1.127/push.php?request=index
    内网：http://121.40.238.31/push.php?request=index
</code></pre>

<p>功能：用户喜好 用于推送</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，       //用户唯一ID
    noticeList：{            //设置时候传参数，传需要设置的选项
                    news:bool            //1开启 0关闭 热点新闻
                    arrivein:bool        //1开启 0关闭 车辆进站提醒
                    getoff:bool          //1开启 0关闭 下车提醒
                    trip:bool            //行程提醒
                }
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    uid：xxxxxxxxxxxx，//用户唯一ID
    noticeList：{        //请求设置时候返回
                    news:bool            //1开启 0关闭 热点新闻
                    arrivein:bool        //1开启 0关闭 车辆进站提醒
                    getoff:bool          //1开启 0关闭 下车提醒
                    trip:bool            //行程提醒
                }
}
</code></pre>

<p>类型枚举：</p>
<pre><code>1：热点新闻
2：车辆进站提醒
3：下车提醒
4：行程提醒
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：UID错误
</code></pre>

<h1>20.添加/修改/删除/结束行程</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网地址：
    添加行程：http://192.168.1.127/trip.php?request=create
    修改行程：http://192.168.1.127/trip.php?request=update
    删除行程：http://192.168.1.127/trip.php?request=delete
    结束行程：http://192.168.1.127/trip.php?request=end
外网地址：
    添加行程：http://121.40.238.31/trip.php?request=create
    修改行程：http://121.40.238.31/trip.php?request=update
    删除行程：http://121.40.238.31/trip.php?request=delete
    结束行程：http://121.40.238.31/trip.php?request=end
</code></pre>

<p>功能：行程安排</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
    index_id：行程索引ID，删除修改，结束行程时候设置
    describle：标记，
    beginPoint：{//起点
                    dec：描述，
                    location：{lat：纬度值，lng：经度值}//位置
                }，
    endPoint：{//终点
                    dec：描述，
                    location：{lat：纬度值，lng：经度值}//位置
              }，
    arriveTime：出发时间 8：20：00，
    repeat_type：行程提醒重复类型，
    self_repeat：自定义重复类型 这个具体做的时候再定义，
    route：[//路线
                {
                    index:第几步，
                    routeType：执行方式 1：步行，2：公交
                    beginPoint：{//起点
                        dec：描述，
                        location：{lat：纬度值，lng：经度值}//位置
                    }，
                    endPoint：{//终点
                        dec：描述，
                        location：{lat：纬度值，lng：经度值}//位置
                    }，
                    //步行使用
                    distance：距离，
                    //公交使用
                    stationCount：几个站，
                    directionData:{
                                directionID:方向ID，
                                beginStationID：上车站台ID，
                                endStationID：下车站台ID
                            }
                    useTime：消耗时间
                    path：线路路径
                }，
                ... 
            ],
    open：是否开启，
    noticeTime：提前多久通知，单位m分钟
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    uid：xxxxxxxxxxxx，//用户唯一ID
    tripid.：行程ID，（发出设置请求时 无需填写）
    mark：标记，
    index_id:行程索引ID
    beginPoint：{//起点
                    dec：描述，
                    location：{lat：纬度值，lng：经度值}//位置
                }，
    endPoint：{//终点
                    dec：描述，
                    location：{lat：纬度值，lng：经度值}//位置
              }，
    startname:起点位置名称,
    endname:结束位置名称,
    arrivetime：到达时间 2015-05-15 8：20：00，
    repeat_type：行程提醒重复类型，字符串JSON类型，
    route：[//路线
                {
                    index:第几步，
                    routeType：执行方式 1：步行，2：公交
                    beginPoint：{//起点
                        dec：描述，
                        location：{lat：纬度值，lng：经度值}//位置
                    }，
                    endPoint：{//终点
                        dec：描述，
                        location：{lat：纬度值，lng：经度值}//位置
                    }，
                    //步行使用
                    distance：距离，
                    //公交使用
                    stationCount：几个站，
                    lineData:{
                                LID:线路ID，
                                lineMark：线路描述，
                            }
                },
                ... 
            ],
    isopen：是否开启，
    noticeTime：提前多久通知，
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：UID错误
2：坐标参数缺失
3：请求失败
4：索引index_id错误
</code></pre>

<h1>21.请求行程列表</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/trip.php?request=index
外网：http://121.40.238.31/trip.php?request=index
</code></pre>

<p>功能：获得服务保存的行程列表</p>
<p>POST参数：</p>
<pre><code>{
    uid：xxxxxxxxxxxx，//用户唯一ID
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    uid：xxxxxxxxxxxx，//用户唯一ID
    tripList：[
                {
                    index_id：行程ID，（发出设置请求时 无需填写）
                    describle：标记，
                    beginPoint：{//起点
                                    dec：描述，
                                    location：{
                                        lat：纬度值，
                                        lng：经度值
                                    }//位置
                                }，
                    endPoint：{//终点
                                    dec：描述，
                                    location：{
                                        lat：纬度值，
                                        lng：经度值
                                    }//位置
                              }，
                    startname:起点位置名称,
                    endname:结束位置名称,
                    arrivetime：到达时间 2015-05-15 8：20：00，
                    repeat_type：行程提醒重复类型，字符串JSON类型，
                    route：[//路线
                                {
                                    index:第几步，
                                    path:经过路径的坐标点
                                    routeType：执行方式 1：步行，2：公交
                                    beginPoint：{//起点
                                        dec：描述，
                                        location：{
                                            lat：纬度值，
                                            lng：经度值
                                        }//位置
                                    }，
                                    endPoint：{//终点
                                        dec：描述，
                                        location：{
                                            lat：纬度值，
                                            lng：经度值
                                        }//位置
                                    }，
                                    //步行使用
                                    distance：距离，
                                    //公交使用
                                    stationCount：几个站，
                                    lineData:{
                                                LID:线路ID，
                                                lineMark：线路描述，
                                            }
                                    useTime：消耗时间
                                },
                                ... 
                            ],
                    isopen：是否开启，
                    noticeTime：提前多久通知，
                },
                ...
              ]
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：UID错误
</code></pre>

<h1>22.搜索线路/站点</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/search.php
外网：http://121.40.238.31/search.php
</code></pre>

<p>功能：获得线路/站点数据</p>
<p>POST参数：</p>
<pre><code>{
    params：搜索信息，
    page:1,//分页
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    params：搜索信息，
    currentPage:1,//当前页码
    totalPage:20，//总页数
    stationList：[//站点列表
                    {
                        siteID:站点ID
                        lineList：结构见后说明
                    },
                    ...
                 ],
    lineList：结构见后说明
    stationTimeList：结构见后说明
}
</code></pre>

<p>LineList结构：</p>
<pre><code>lineList:[//经过该站点线路列表
            {
                lineID:线路ID
                defaultDirectionID:默认显示方向ID
                directionList：结构见下文
            }，
            ...
         ]
</code></pre>

<p>directionList结构说明：</p>
<pre><code>    directionList:[//方向列表
                    directionID:方向ID,
                    lineID:线路ID,
                    nextDirection:反向ID（如果是环线 那就还是自己）,
                    busList：[//该方向车辆列表
                                {
                                    busID:车辆ID
                                    curPos：{
                                        lat://纬度
                                        lng:经度
                                    }
                                    state:1 //公交状态 0：其他1：前往目标站2：到达目标站
                                    targetStationID:目标站台ID
                                    myCurDirection:方向ID
                                },
                                ...
                            ]
                  ]
</code></pre>

<p>stationTimeList结构说明：</p>
<pre><code>    stationTimeList：[//记录两个站点之间的时间
                        {
                            SIDA：A站
                            SIDB：B站
                            time：时间,单位秒
                        }，
                    ]
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：搜索信息参数丢失
2：请求失败
</code></pre>

<h1>23.站点数据</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/station.php
外网：http://121.40.238.31/station.php
</code></pre>

<p>功能：获得站点信息</p>
<p>POST参数：</p>
<pre><code>{
    sid：站点ID
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    siteID：站点ID
    mark：站点信息
    lineList:[//经过该站点线路列表
            {
                lineID:线路ID
                mark：线路信息
                defaultDirectionID:默认显示方向ID
                directionList：[//方向列表
                    {
                        directionID:方向ID
                        lineID:线路ID
                        nextDirection:反向ID（如果是环线 那就还是自己）
                        busList：[//该方向车辆列表
                                    {
                                        busID:车辆ID
                                        curPos：{
                                            lat://纬度
                                            lng:经度
                                        }
                                        state:1 //公交状态 0：其他1：前往目标站2：到达目标站
                                        targetStationID:目标站点ID
                                        myCurDirection:方向ID
                                    },
                                    ...
                                ]
                    },
                    ...
                  ]
            }，
            ...
         ]
    stationTimeList：[//记录两个站点之间的时间
            {
                SIDA：A站
                SIDB：B站
                time：时间
            }，
        ]
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：站点ID错误
2：请求失败
</code></pre>

<h1>24.线路数据</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/line.php
内网：http://121.40.238.31/line.php
</code></pre>

<p>功能：获得线路信息</p>
<p>POST参数：</p>
<pre><code>{
    lid：线路ID
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    lineID：线路ID
    mark：线路描述
    defaultDirectionID:默认方向ID
    directionList:[//方向列表
        {
            directionID:方向ID
            nextDirection:反向ID（如果是环线 那就还是自己）
            lineID：线路ID
            busList：[//该方向车辆列表
                        {
                            busID:车辆ID
                            curPos：{
                                lat:纬度,
                                lng:经度      //当前位置
                            }
                            state:1 //公交状态 0：其他1：前往目标站2：到达目标站
                            targetStationID:目标站台ID
                            myCurDirection:方向ID
                        },
                        ...
                    ]
        },
        ...
     ]
    stationTimeList：[//记录两个站点之间的时间
        {
            SIDA：A站
            SIDB：B站
            time：时间
        }，
    ]
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：线路ID错误
2：请求失败
</code></pre>

<h1>25.请求方向</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/direction.php
内网：http://121.40.238.31/direction.php
</code></pre>

<p>功能：获取单个线路方向</p>
<p>POST参数：</p>
<pre><code>{
    directionID:41160,
}
</code></pre>

<p>返回数据：</p>
<pre><code>{
    result:0,
    msg:Request Successfully!,
    directionID:方向ID
    lineID:线路ID
    nextDirection:反向ID（如果是环线 那就还是自己）
    busList：[//该方向车辆列表
                {
                    busID:车辆ID
                    curPos：{
                            lat:纬度,
                            lng:经度      //当前位置
                        }
                    state:1 //公交状态 0：其他1：前往目标站2：到达目标站
                    myCurDirection:站点ID
                    targetStationID:目标站台ID
                },
                ...
            ],
    stationTimeList：[//记录两个站点之间的时间
        {
            SIDA：A站
            SIDB：B站
            time：时间
        }，
    ]

}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：不合法的directionID
</code></pre>

<h1>25.开始导航</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/navigation.php?request=start
外网：http://121.40.238.31/navigation.php?request=start
</code></pre>

<p>功能:开始导航</p>
<p>POST参数：</p>
<pre><code>{
    uid:用户UID,
    line_plan:{
        arriveTime：预计到达时间
        route：[//方案列表
                    [//单个方案说明
                        {
                        index:第几步，
                        routeType：执行方式 1：步行，2：公交
                        beginPoint：{//起点
                            dec：描述，
                            position：{lat：纬度值，lng：经度值}//位置
                        }，
                        endPoint：{//终点
                            dec：描述，
                            position：{lat：纬度值，lng：经度值}//位置
                        }，
                        //步行使用
                        distance：距离，
                        //公交使用
                        stationCount：几个站，
                        directionData:{
                                    directionID:方向ID，
                                    beginStationID：上车站台ID，
                                    endStationID：下车站台ID
                                }
                        useTime：消耗时间
                        path：线路路径
                        }，
                        ... 
                    ],
                    ...
               ],
    }
}
</code></pre>

<p>返回数据（JSON）:</p>
<pre><code>{
    result:0,
    msg:Request successfully!
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：参数错误
2：请求失败
</code></pre>

<h1>26.导航线路</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/navigation.php  //坐标导航
外网：http://121.40.238.31/navigation.php  //坐标导航
</code></pre>

<p>功能：获得最优方案</p>
<p>POST参数：</p>
<pre><code>{
    uid:用户UID
    origin：{//起点
        lat：纬度值，
        lng：经度值//位置
        dec：描述  //可选
    }，
    destination：{//终点
        lat：纬度值，
        lng：经度值//位置
        dec：描述   //可选
    }，  
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0
    msg:Request successfully！
    origin：{//起点
        dec:描述
        location：{lat：纬度值，lng：经度值}//位置
    }，
    destination：{//终点
        dec:描述
        location：{lat：纬度值，lng：经度值}//位置
    }，  
    planList：[//方案列表 最优方案放在第一个
                {
                    arriveTime：预计到达时间
                    route：[//方案列表
                                [//单个方案说明
                                    {
                                    index:第几步，
                                    path：线路路径
                                    routeType：执行方式 1：步行，2：公交
                                    beginPoint：{//起点
                                        dec：描述，
                                        location：{lat：纬度值，lng：经度值}//位置
                                    }，
                                    endPoint：{//终点
                                        dec：描述，
                                        location：{lat：纬度值，lng：经度值}//位置
                                    }，
                                    distance：步行距离或者公交车经过线路距离,
                                    //公交使用
                                    stationCount：几个站，
                                    directionData:{
                                                directionID:方向ID，
                                                beginStationID：上车站台ID，
                                                endStationID：下车站台ID
                                            }
                                    useTime：消耗时间，单位秒
                                    }，
                                    ... 
                                ],
                                ...
                           ],
                    walkDistance://总步行距离，
                    ridingDistance://总乘车距离
                }，
                ...
              ],
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：参数错误
2：地图接口错误
3：参数错误，坐标，POI地址必须填一个
</code></pre>

<h1>27.附近公交</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/nearby.php
外网：http://121.40.238.31/nearby.php
</code></pre>

<p>功能：获得最优方案</p>
<p>POST参数：</p>
<pre><code>{//两者选填一个
    location:{
                lat：纬度值
                lng：经度值
             }，
    stationid:站台ID 
}
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0,
    msg:Request successfully!,
    stationID://站台ID
    lineList:[//经过该站点线路列表
        {
            lineID:线路ID
            mark：线路信息
            defaultDirectionID:默认显示方向ID
            directionList：[//方向列表
                {
                    directionID:方向ID
                    lineID:线路ID
                    nextDirection:反向ID（如果是环线 那就还是自己）
                    busList：[//该方向车辆列表
                                {
                                    busID:车辆ID
                                    curPos：{
                                        lat:纬度,
                                        lng:经度      //当前位置
                                    }
                                    state:1 //公交状态 0：其他1：前往目标站2：到达目标站
                                    myCurDirection:站点ID
                                    targetStationID:目标站台ID
                                },
                                ...
                            ]
                },
                ...
              ]
        }，
        ...
     ],
    stationTimeList：[//记录两个站点之间的时间秒数
        {
            SIDA：A站
            SIDB：B站
            time：时间
        }，
        ...
    ]
}
</code></pre>

<p>错误标识：</p>
<pre><code>0：正确
1：location参数错误
2：附近无相关公交站台
3：站台ID错误
</code></pre>

<h1>28.记录用户坐标</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/location.php
外网：http://121.40.238.31/location.php
</code></pre>

<p>功能：获得最优方案</p>
<p>POST参数：</p>
<pre><code>{
    uid:UID,
    'needReturn':0 //是否需要返回，0否，1需要
    'location': String结构json，结构见location结构
}

location结构
location：[{
    lat:纬度,
    lng:经度,
    date:时间戳
},
//...
]
</code></pre>

<p>返回数据（JSON）：</p>
<pre><code>{
    result:0,
    msg:Request successfully!
}
</code></pre>

<p>PS:当needReturn为1该接口才有正确情况的返回值</p>
<h1>29.公告接口</h1>
<p>服务地址（POST请求）</p>
<pre><code>内网：http://192.168.1.127/notice.php
外网：http://121.40.238.31/notice.php
</code></pre>

<p>POST参数：无</p>
<p>返回数据（JSON）：</p>
<pre><code>{
    result:0,
    noticeList:[
        {
            title:标题
            url:http://www.xxx.com/
        },
        ... ...
    ]       
    msg:Request successfully!
}
</code></pre>

<h1>30.检查版本更新地址</h1>
<p>服务地址(POST)：</p>
<pre><code>内网：http://192.168.1.127:8088/index.php?m=upgrade
外网：http://121.40.238.31:8085/index.php?m=upgrade
</code></pre>

<p>POST参数：</p>
<pre><code>{
    &quot;deviceType&quot;:1,//1 IOS 2 Android
    &quot;curVersion&quot;:&quot;当前版本&quot; 
}
</code></pre>

<p>返回结果(JSON):</p>
<pre><code>{
    'result':0 //0无需更新，1强制更新，2可跳过更新版本
    'version'://xxxx版本号,
    'url':更新地址
}
</code></pre>

<p>状态标识：</p>
<pre><code>0：正确，且不需要更新
1：正确，大版本需要强制更新
2：正确，可以跳过更新，

5：当前版本错误
6：设备类型错误
</code></pre>

<h1>31.检查文件更新地址</h1>
<p>服务地址（POST)：</p>
<pre><code>内网：http://192.168.1.127:8088/index.php?m=upgradeFile
外网：http://121.40.238.31:8085/index.php?m=upgradeFile
</code></pre>

<p>POST参数：</p>
<pre><code>{
    'curVersion':'xxxx'//当前版本   
}
</code></pre>

<p>返回结果(JSON):</p>
<pre><code>{
    'result':0, //0：不需要更新 1：需要更新
    'version':'xxx',//版本
    'url':'xxx',//更新下载地址
    'md5':'23423AEDSINV' //文件的MD5码
}
</code></pre>

<p>状态标识：</p>
<pre><code>0：正确，且不需要更新
1：正确，需要更新


5：当前版本错误
</code></pre>

<h1>附录</h1>
<p>服务异常状态:说明，服务端自动捕获到无法处理的异常，均返回小于0的服务器异常状态</p>
<p>MySQL:</p>
<pre><code>{
    result:-1   //MySQL异常
    msg:Cannot connect to MySQL server!
}
</code></pre>

<p>Redis:</p>
<pre><code>{
    result:-2   //Redis异常
    msg:Cannot connect to redis server!
}
</code></pre>

<p>MySQL配置：</p>
<pre><code>{
    result:-3   //MySQL配置异常
    msg:Unknow mysql config!
}
</code></pre>

<p>Redis配置:</p>
<pre><code>{
    result:-4   //Redis配置异常
    msg:Unknow redis config!
}
</code></pre>


</body>
</html>
<!-- This document was created with MarkdownPad, the Markdown editor for Windows (http://markdownpad.com) -->
